package com.qire.manhua.dal;

import com.qire.antsbinder.dal.DataWarehouse.WarehouseCacheMode;
import com.qire.antsbinder.dal.DataWarehouse.MethodType;
import com.qire.antsbinder.dal.annotation.DataAccess;
import com.qire.antsbinder.dal.annotation.ParamsAlias;
import com.qire.antsbinder.dal.annotation.ParamsUrl;
import com.qire.common.constant.Url;
import com.qire.manhua.model.vo.AppEnterAdVO;
import com.qire.manhua.model.vo.ClassifiedTagVO;
import com.qire.manhua.model.vo.FileResponseVO;
import com.qire.manhua.model.vo.GlobalAdvertConfigVO;
import com.qire.manhua.model.vo.ProtocolVarVO;
import com.qire.manhua.model.vo.StartupConfigVO;

import java.io.File;
import java.util.List;
import java.util.Map;

/**
 * app 相关配置信息
 */
public interface IAppConfigDAL {

    /**
     * 获取 APP 入场广告配置信息
     */
    @DataAccess(url = Url.v3_advertise, methodType = MethodType.GET)
    AppEnterAdVO fetchAdInfo();

    /**
     * 获取主要协议版本信息
     */
    @DataAccess(url = Url.ProtocolVar, methodType = MethodType.GET)
    ProtocolVarVO fetchProtocolVar();

    /**
     * 获取 APP 启动配置数据
     */
    @DataAccess(url = Url.StartupConfig)
    StartupConfigVO fetchStartupConfig();
    /**
     * 获取 APP 启动配置数据
     */
    @DataAccess(url = Url.GlobalAdvertConfig)
    Map<String, GlobalAdvertConfigVO> fetchGlobalAdvertConfig();

    /**
     * 获取推荐分类标签
     */
    @DataAccess(url = Url.AllClassifiedTag, cacheMode = WarehouseCacheMode.FIRST_CACHE_THEN_REQUEST)
    List<ClassifiedTagVO> fetchAllClassifiedTag();

    /**
     * 上传图片接口
     * @param imageFile 图片文件
     */
    @DataAccess(url = Url.upload_img)
    String uploadImage(@ParamsAlias(name = "imageFile") File imageFile);


    /**
     * 上传图片接口
     * @param uploadUrl 上传图片的Api接口地址
     * @param imageFile 上传的图片文件
     * @return
     */
    @DataAccess(url = "")
    FileResponseVO uploadImage(@ParamsUrl String uploadUrl, @ParamsAlias(name = "uploadFile") File... imageFile);

}
